這邊來跟大家分享一下 Docker 網路入門系列文第二篇
該篇文章會一步一步的去探討原生 Docker Bridge 模型到底會做什麼事情,每個步驟如何自己透過 Linux 指令來完成。
本篇文章著重於如何打造一個可以讓容器互通的網路模型,本身還沒有涉入過多關於 iptables 等能夠讓容器存取外網能力的介紹,這部份會於第三篇文章再來仔細介紹
有興趣的人歡迎看看這篇文章,不吝指教
https://www.hwchiu.com/docker-network-model-lab.html
「linux bridge」的推薦目錄:
- 關於linux bridge 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於linux bridge 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於linux bridge 在 OSSLab Geek Lab Facebook 的精選貼文
- 關於linux bridge 在 [Linux] 內核虛擬Bridge, veth原理與實作 - 黃大仙的雲端修行室 的評價
- 關於linux bridge 在 Filtering out VLAN tagged packets on Linux bridge [closed] 的評價
- 關於linux bridge 在 Please help understanding linux bridge interfaces - Unix ... 的評價
- 關於linux bridge 在 michael-dev/mvrpd: linux bridge mvrp daemon - GitHub 的評價
linux bridge 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Crosslink Recap —— Design pattern: build your first profitable DApp and smart contract
✍️ Feihu Tang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
上文 里說到,這幾天我會在臺北的 Crosslink 作為文字組的志願者,此次我負責這個議程的記錄,裡面非常多的 insight,我聽了非常感動。
會後,陳品來和我說,這次有一點遺憾是自己選擇使用英文,但是自己的英文並不足夠流利,使得大概只是介紹 slide 內容本身,如果用中文的話,就可以捕捉到更多的信息了。但是我覺得現在的版本就已經足夠好,會議當天臺下也有很多 foreigners,這種偶爾選擇走出自己舒適區的方法也是非常值得鼓勵!
陳品和我同是 TPE 的演講者,同時又都在去年成立了自己的 Dapp Startup,我們之間 share 著許多共同的觀點,這一次能夠記錄這個議程,也可以從側面描述一些從我的視角出發的補充論據。這里順便吐槽一下,剛從大阪 Devcon 回來,去了北京 Dragonfly,為了參加 Crosslink,中間不得不又回到日本,差點沒累個半死 …
參考資料
Bilibili, 演講回放 | Youtube 分流
Slide, Design Pattern: Build Your First Profitable DApp and Smart Contract.
Slide, Web3 Business Models by @owocki
加密協議的本質已不是「去中心化」,而是區塊鏈的可分叉
Multicoin:论 Layer 1 和 Layer 2 的价值捕获
論開放式金融框架下價值捕獲的重要性
五分鐘概覽 DeFi 當前常見的商業模式
挑戰
回到當天的議程。首先陳品介紹了 Dapp 開發者所面臨的挑戰,他將一個 Dapp 的生命周期,劃分為三個階段:
Bootstrap 冷啟動
Value Capturing 價值捕獲
Sustainability 可持續發展
其中最難的也是最核心的是第二個階段,Remember what has been told by Felix?
緊接著,陳品類比擴容悖論(Scalability Trilemma) 提出了 Dapp 悖論 (Dapp Dilemma)。開發一個 Dapp 非常容易,但是要開發一款可持續盈利的 Dapp 卻非常困難。究其原因,就是 Dapp 合約在默認情況下應當是開源的,而開源則意味著任何人都可以 fork ,然後將手續費設置成更低甚至是免費的版本。然而開源,或者說 「可分叉性」 ,這柄高懸在開發者頭頂的達摩克利斯之劍,又恰恰是她最迷人的地方。開源、自治、可持續,是每一個 Dapp 開發者所追求的極致的目標。
如同擴容悖論 (Scalability Trilemma) 只是 hard to achive 一樣,Dapp 悖論 (Dapp Dilemma) 也並非無解。
月前 Shell Xu 在 Linux Story 群里有一次 關於開源盈利模式的討論。Btw, 我之前在 Github x 平安雲的活動上, 還有幸聽了 Shell 的一節課 。
Shell 認為開源的盈利模式,有很多種,其中包括:
捐助 有很多成功的例子。甚至還有專門的網站 Patreon,ci-en 以及 愛發電。一些比特幣和匿名幣的開發者也依靠這種模式。軟體開源,但是往 AppStore 賣的話,實際也算是捐助,例如 keka 和很多 shareware games。 (這麼說來,itch 里自由定價,其實理論上也算是捐助吧。)
軟體免費,服務收費 代表 Red Hat
雙授權 代表 GhostScript 和 MongoDB
基金會 然後基金會又分為好幾種模式。 其中最成功的要算 Apache 基金會,參見 從用戶成為“股東” — — 在 Apache 基金會的 2600 天(Mozilia 你還好嗎 — — ?)
緊接著我提到,發幣其實也是一種。這一點最好的文章是 Naval 14 年寫下的那篇著名的 《比特幣眾籌模式》。這個觀點 Shell Xu 也非常認同,並且他還特別指出發幣事實上是很成功的一種手段。另外,最後我的觀點,我後來也專門寫了一篇文章, from open source to self hosting … 這是一個 Self hosting 的例子。
案例
EasyDAI
接下來陳品開始分析一些實際的案例,首先從自己的作品開始。
使用者將以太幣存入後,便會透過智慧合約自動執行,將以太幣兌換為美元穩定幣 DAI,隨後把 DAI 存入 Compound 借貸放款平臺,經由智慧合約去中心化地放款給其他有融資需求的用戶來獲得利息。
—— EasyDAI
我們看到 EasyDAI 的一筆交易中,會同時調用經過多個智能合約,這種互通性(Interoperability),也是 DeFi 項目的魅力之一。參見 InstaDApp, Bridge Protocols 。
Bancor VS Uniswap
剛才說到,發幣也是一種商業模式。談及 ICO,雖然我们都知道 Linux 那句著名的 Talk is Cheap,Show me the code,但在區塊鏈的世界,通常的作法則是 You reap, before you sow。但是並不是說,發幣就是解決所有的問題銀彈,可以參見 Gitcoin 的那篇,而一個多餘的 Token 帶來的後果很可能是災難性的。
Why Gitcoin Didn’t Launch With A Token
比較 Bancor 和 Uniswap,Uniswap 勝出已成公論,原因很多。首先 Uniswap 不會被 Bancor 代幣尋租(之前 Bancor 的運營人員有聯絡到我們希望幫我們的 EOS 代幣上 Bancor 交易所,當然代價是 5000 usdt。。。)。
然後更致命的原因 Bancor 的流動性是死的,而 Uniswap 協議的流動性足夠靈活,可以隨著市場的變化,動態調整。
最後 Bancor 協議的前提,假設 cw 是定值看起來也很沒道理。而所有這些原因,導致的結果就是會是 Bancor 錨定的代幣,缺少脫鉤的機制。關於這個論點,我之前在 Dapp Review 專門寫過文章: 重新審視 Bancor 演算法,為什麼 cw 是失效的設計 。
Kybey
接下來列舉了一個中庸的例子,Kybey。他依靠著 offchain 的設計,避免自己過早的遭遇分叉,從而也成功的積累了網路效應。
Raiden Network
而作為失敗例子的代表,相比於 Lightning,Raiden 網路發行了自己的代幣,並且類似以太坊那樣將這種代幣作為手續費,但是這種做法並沒有捕獲到 Layer2 的價值,從而導致項目的失敗。
MakerDAO
最後陳品舉了一個正面的價值捕獲的例子 — MakerDAO,這個觀點也和此前 X-Orde 群里 Tina 的看法一致。
結論
回到 Dapp Dilemma,因為 Smart Contract 默認你就是需要開源的,所以所有開源軟體會遇到的問題,你大概也都會遇到,而解決這一問題的唯一方法,陳品在 slide 里也進行了總結,就是 在被分叉之前,捕獲足夠的價值,從而積累出足夠的網路效應作為你的壁壘 。
QA
Q: 如何實現閉源。
A: 不要在 etherscan 里 verify source code 就可以了。 這里我還有一個小的疑問,因為實際上我們所有的 bytecode 已經上 EVM 了,這里是否有可能被逆向工程?@陳品
Q: 閉源真的有用戶來用嗎?
A: Of course。
Q: How about PollTogether?
A: 這是一個價值捕獲的好的例子,等到他們開源的時候,合約里已經有足夠吸引力的 deposit 了。
Crosslink Recap —— Design pattern: build your first profitable DApp and smart contract was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
linux bridge 在 OSSLab Geek Lab Facebook 的精選貼文
https://www.facebook.com/photo.php?fbid=10216019118603397
分享資安前輩 Kuon大大文
剛好上禮拜收到了一座 WD DUO 3TB*2 Raid 1
用戶說沒有設定密碼
就算沒有設定用戶密碼 一樣有eDEK密鑰
預設就是全扇區AES硬體加密
拿起昂貴資料救援設備來分析.
PC3000 跟MRT,從韌體Module 25,38讀出來
WTF?Keyblock (eDEK不正確)解密錯誤...
好 OSSLab Geek Lab還算看得懂論文跟原始碼
eDEK除了韌體外,在硬碟Lba也有備份
https://github.com/andlabs/reallymine/issues/45…
不同晶片的 Keyblock LBA位置
3 TB 5860528160
3 TB 5860529539
3 TB 5860533120
都翻過了 都是00 都沒有eDEK...
學前文Kuon大大查簽名
57 44 76 31
53 59 4D 57
53 49 6E 45
57 44 01 14 都失敗.
https://github.com/andlabs/reallymine/issues/15…
這案子搞到頭有點痛..看起來是都沒有人對WD DUO JMS561做過完整加解密分析.如果如同前文只是主控版損壞那就簡單..晚點再從與Usb to Bridge EEPROM內找看看eDEK
看不懂前文請先看這篇
https://www.osslab.com.tw/wd-usb-aes-recovery/
資料救援真的不一定會100%成功,只是我們會盡力研究與處理.
#OSSLab
咚!
#資料救援
這兩天剛好有朋友資料掉了,也是 WD 外接硬碟系列,來分享我今年的處理過程。
這篇會是個長篇,各位看倌要有心理準備 XD
也因為早就預期是個長篇,所以想了很久卻一直沒有開動。
====
[為什麼需要救援]
7 月份辦公室事故,樓下的高溫粒子沿著 1) 管道間 或 2)玻璃帷幕與牆壁中間的夾縫 亂竄,管道間旁,除了窗戶冷氣外,還堆了一堆易燃雜物 (紙 & 塑膠包材),這些雜物熔點一到自燃,所以我在路邊吃冰淇淋的時候,可以看到火苗從窗戶冒出。
吃冰淇淋的同時,我念茲在茲的只有硬碟(裡面的資料),因為備份用的幾十 TB 硬碟平常是離線儲存,擺在鐵櫃裡,而鐵櫃離火源非常接近....
幸好火源在窗戶旁邊,所以很快被發現並被撲滅。
到我可以進入現場,第一件事情就是開鐵櫃,手摸到鐵櫃的第一感覺,更,鐵櫃是溫熱的 :(
最重要的那顆 16TB 硬碟,是鐵櫃內最靠近火源的角落,連外包裝的紙盒都是燙的...,而且紙盒的底部,黏在鐵櫃上,我用力拔出來...
熔化了 :( 心都涼了!(拍一下驚堂木)
由於 1) 當時已經晚上 6 點左右,雖是夏日但天色已晚,室內當然因為事故無光源 2) 事故中間,開放進入現場不到 5 分鐘又撤離,二次燃燒
所以,為了避免可能的三次燃燒(?),當下我就把 16TB 隨手一扔,連放進可以上鎖的鐵櫃都沒有,先搶救其他設備,逃離現場。
因為我以為沒救了。物理毀損ㄟ...
====
[取出硬碟]
事後回想,把那顆硬碟隨便一丟,是個 #潛在的錯誤,因為如果後來建築物又發生什麼狀況,那硬碟可能就真的找不回來了。
我使用的外接硬碟,是 WD My Book Duo 16TB,USB 3.0,外觀可以參考 [1],是亮銀色的外觀。
事故第一晚,我想來想去,都覺得我太心急了,雖然那個外接盒,看起來快要 1/6 的比例熔掉,像是面積用 3x2 六等份排列時缺了一個角,是真的熔了一些東西。
硬碟外接盒,外包裝是紙盒,紙盒內還有一組保麗龍用來固定硬碟外接盒,紙盒在鐵櫃內,鐵櫃還在,紙盒和鐵櫃接觸面僅有焦掉,代表熔點低於這兩者,Google 查了一下保麗龍和塑膠熔點,研判是保麗龍和塑膠被(鐵櫃傳導熱度)熔掉,溫度僅需要 50C~60C,也查了硬碟工作時溫度,大概還撐得住 70C 高溫。
覺得應該慎重點,隔天就去把那顆熔掉的外接盒帶出來研究。
這個外接盒是自帶 2 顆硬碟的,買來插電就可以使用,所以原本也不知道裡面長什麼樣。
前面所提到的,亮銀色部分,研判是熱塑型塑膠,遇熱整個都軟化變形了,變形完一冷,就又固定住了,也就變得很難拆。
我在拆解的時候,很怕塑膠去黏到硬碟的軟板或是堵住氣孔,那就麻煩了,幸好沒有。原來,塑膠裡面是一個(有各種小孔呈網狀的)鐵盒子,硬碟和控制電路板,都在鐵盒子裡面,變形過的塑膠只有黏在鐵盒子外圍。
鐵盒子打開後,硬碟除了有碳粒附著和焦味外,外觀看起來都沒有受損。硬碟拆下來,我就把鐵盒子和塑膠丟掉了。
====
[資料救援前置作業]
事後回想,那個鐵盒子上面還有控制電路版,我在沒有確認電路板(或上面的 ROM)是壞掉的狀況下,就把它丟掉(因為塑膠碎片整個卡在上面,不想聞那個味道),是個 #潛在的嚴重錯誤。萬一外接盒的 1)控制晶片 2) I/O 演算法 3) 金鑰產生方式,依賴硬體,那我就真的救不回來了!!
獲得硬碟之後,因為外接盒(殘骸和那個鐵盒子)被我丟了,所以要再買一組新的。
當我上去 PCHome 看時 (原本的也是 PCHome 買的),我找到的是 [2],同樣都是 WD My Book Duo 16TB,[1] 和 [2] 的區別在一個是 USB 3.0,新的是 USB 3.1。
舊款 USB 3.0 的在別的購物平台有賣,牌價要 2 萬多,新款 3.1 的只要 1 萬 6。
#第一個抉擇來了,要買新款還是舊款?新款便宜個好幾千元,I/O 傳輸速度還比較快 ...
後來我決定打電話,問 WD 的代理商聯強,我還記得是在高鐵接駁車回台南市區的路上。舊款各種容量它們庫存都還有貨,但 16TB 的只剩一台。
#第二個抉擇來了,如果控制晶片都一樣,要買最小容量 6TB 就好,還是要跟原本一樣,買到 16TB?這關乎到 $$$$$$ 啊 ...
我後來決定買舊款,因為我怕新款的控制晶片不同顆,而且買了一樣容量 16 TB,因為在跟聯強工程師通話過程中,得知一個資訊,我覺得我得 Sector-by-Sector 複製了 ....
聯強:「WD 這個系列有 AES 加密」
我 :「我知道,但我沒有開啟,我也沒設過密碼」
聯強:「#就算你沒有設密碼_它還是有一組預設金鑰_而且是硬體加密」
我 :「...」(我瞬間知道這代表的意義,以及對救援難度的增加!!)
SATA-to-USB 轉接線,由於我手上原本的線材也在辦公室,當然得重買新的,跑去北門路買了 2 條。
====
[第一次救援]
在真的討論救援前,讓大家瞭解一下目前的資料架構。
軟體 -- USB -- 硬體
軟體: Data -- Linux EXT4 -- Linux LUKS -- USB
硬體: USB -- Firmware -- HDD
其中,LUKS 作了一次加密,Firmware 層又作了一次加密。也就是將硬碟拔出外接盒的時候,是 2 層加密,LUKS 的密碼是我設的,外接盒 Firmware 設的密碼,#我不知道!!
舊的外接盒中的硬碟,稱為舊硬碟,新的類推。
由於不知道新的控制晶片,會不會偷偷寫入 metadata 到舊硬碟,我不敢貿然的將舊硬碟插入新的外接盒,所以,我直接用 2 條 USB-to-SATA 傳輸線,採用 Linux dd 整顆對拷。
對了,我在拆舊硬碟的時候,有特別注意硬碟的順序。
每一次 copy 前,我都會檢查 3 次命令列參數和磁碟資訊,看看 if 和 of 有沒有設反 (設反就會把舊硬碟資料覆蓋過去....)
#三十小時過去,16 TB 總算拷完
拷完將新硬碟插回新的外接盒 (儘量不使用舊硬碟),這樣就搞定收工了。
.
.
.
.
.
.
.
.
.
.
.
.
.
(USB 接上電腦) WTF!!!Linux 認不到 LUKS Header,這樣代表在 Firmware 那層的解密就有問題了!我可是 Sector-by-Sector 對拷,怎麼會這樣?
#啟動備案,透過 USB-to-SATA 傳輸線直接對新硬碟 I/O,直接在這層就先破密,不使用外接盒。
為什麼會有備案呢,因為我以前讀過 "got HW crypto? On the (in)security of a Self-Encrypting Drive series" 這系列文件 (參考附圖一),知道 WD 外接盒系列加密演算法有漏洞,想說趁這個機會練習一下。
找了一些 GitHub 專案,要來對 WD 外接盒加密過的硬碟,進行破密,結果一直出現錯誤訊息,回去看 Source Code,發現是 Signature 找不到。
回去對照簡報檔 和 Source Code,發現外接盒 Firmware 會將 Metadata 存到硬碟的尾部,為了識別 Metadata,有一組固定的常數 Signature。
沒有找到 Signature,當然就意味著無法讀取正確的 Metadata。仔細讀過工具的 Source Code,發現沒有支援 8TB 的 offset (用來定位硬碟尾部位置),新增了一組我自己算的 offset,還是沒有找到。
有可能是我算錯,所以我改寫了工具,直接在一個比尾部更大許多的範圍,開始暴力搜尋 Signature,還是沒有找到。
囧了,只好直接拿起 Linux hd 指令,看 hexdump 結果,在我搜尋許多位置後,在 4TB 位置,觀察到一件事,就是 4TB 之後的內容都是 0x00!!
不對啊,我記得我這組外接硬碟使用超過 2/3 了,在有加密的情況下 (而且這個情況是雙重加密),不可能大量的 0x00 啊 ...
我重新思考了所有可能性,最後,發現了一件事情,我新買的 USB-to-SATA 傳輸線,外包裝盒寫著 "支援 4TB",它又沒說是 "最大支援 4TB" 阿 @@ TMD 採到雷!!!
我要找的 signature 會配置在硬碟的尾部,也就是 4TB~8TB 之間,傳輸線讀不到,當然找不到。
====
[第二次救援]
第一次救援的時候,我們家三寶還沒出生,中間那個禮拜特別忙,忙完三寶就出來 "Hello World!!\n" 了,所以,第二次救援已經是在月子中心處理的 XD
這次不用(雷雷的) USB-to-SATA 傳輸線了,請家裡人從光華帶了一台 4bay 的外接盒,有確認支援到單顆 8TB,而且故意挑沒有 RAID 功能。
#RAID!各位看完前面的描述,都沒有人注意到這件事情。WD My Book Duo 的 16TB,是由 2 顆 8TB WD 紅標組成。
當外接盒 WD My Book Duo 插進電腦時,預設只會出現一顆外接硬碟。也就是說,這個外接盒的預設模式,要麼是 JBOD 要麼是 RAID 0 (以下通通簡稱 RAID-like)。這也是我前面提到,我必須特別注意,2 顆 8TB 硬碟順序的原因。
#六十小時過去,真 16 TB 總算拷完
.
.
.
.
.
.
.
.
.
.
.
.
.
(USB 接上電腦) WTF!!!Linux 認不到 LUKS Header,這樣代表在 Firmware 那層的解密就有問題了!我可是 Sector-by-Sector 對拷,怎麼會這樣?
#啟動備案的備案,不對,我沒有備案的備案了阿...
我用前面提到的改寫過的工具,直接在一個比尾部更大許多的範圍,開始暴力搜尋 Signature,還是沒有找到。但硬碟尾部是有亂碼資料沒錯。
重新翻閱文件 "got HW crypto? On the (in)security of a Self-Encrypting Drive series" ,你會發現文件是針對 WD 的 My Book 和 My Passport 系列的外接盒,這些都是單顆硬碟的外接盒。我的是 My Book Duo,多了個 Duo 也就多了個 RAID-like 的行為。
很好,我的情況 no prior art .... 那麼現在的硬體處理資料的流程將會是:
#第一種可能,USB -- AES -- RAID-like -- HDD
#第二種可能,USB -- RAID-like -- AES -- HDD
#第三種可能,USB -- 我不知道 -- HDD
而韌體面,Signature 也有可能換一個未知的,但這點和上面的資料流程,都非得對韌體逆向工程才會知道。
我甚至都已經想過,寫 Linux 上的 FUSE 或 dm-* module,自己疊 RAID-like + AES 的透明轉換層 ... 如果我知道 AES 的 Key 的話,#可是我不知道阿。
坦白說,這個時候,我心都涼了,#我真的覺得救回來的機率很渺茫了。
要特別注意,這時候無論是新硬碟在 WD My Book Duo 裡面或是 4bay 外接盒,都無法正確判斷是 LUKS。
我可是 dd 的說,雖然不是 ddrescue,但拷貝過程就算有 bit error,對解密的錯誤擴散過程,也相當有限阿,除非好死不死,bit error 剛好發生在 Metadata 結構吧。
====
[第三次救援]
#這時候有馬比無馬好,有馬才能當活馬醫 XDD
我想說,好,至少我已經有一份 1:1 的備份了,把舊的硬碟按順序,插上新的 WD My Book Duo。
視窗彈出來了,不是小算盤,是 GNOME Disk 彈出來要求我輸入 LUKS 密碼的輸入框,嘿嘿,輸入密碼,16TB Get Back :)
這次前面有一些錯誤,資料能 100% 救回來,真的是運氣好。另外,也是 WD 的演算法有考慮到一些東西,至少沒有完全依賴控制電路板。
#我都已經準備好要逆向韌體了,雖然好玩,但還是資料救回來比較重要!
====
#自己的硬碟自己救
收工。
[1] https://support.wdc.com/product.aspx?ID=134&lang=en
[2] https://24h.pchome.com.tw/prod/DRAA6H-A9008G9W6?fq=/S/DRAA6H
#牆壁文
linux bridge 在 Please help understanding linux bridge interfaces - Unix ... 的推薦與評價
You can utilize a bridge interface to serve IPs to multiple VMs on one interface, and it is absolutely needed if you plan to have your VMs ... ... <看更多>
linux bridge 在 [Linux] 內核虛擬Bridge, veth原理與實作 - 黃大仙的雲端修行室 的推薦與評價
[Linux] 內核虛擬Bridge, veth原理與實作| Hands on Linux Kernel: bridge, veth·前言目的:實作linux bridge,實驗不同namespace之互通性什麼 ... ... <看更多>